/**
 * Created by Administrator on 2017/3/3.
 * @description 自定义常用的过滤器
 */
'use strict';

/**
 * 货币转换
 * @param  参数说明
 * [value] 要转换的数值
 * [type]  货币的类型,如：$, ￥ 等
 * [num]   货币小数位数, 默认的2
 *
 * e.g '0.9' => '$0.90'
 */
exports.currency = function (value, currency, decimals) {
    const digitsRE = /(\d{3})(?=\d)/g;
    if(typeof value === 'undefined' || value == '') value = 0;

    //匹配加号符号
    var flagStr = '';
    var re = new RegExp(/^\+/);
    if(re.test(value)) flagStr = '+';

    value = parseFloat(value);
    if (!isFinite(value) || (!value && value !== 0)) return '';
    currency = currency != null ? currency : '$';
    decimals = decimals != null ? decimals : 2;
    var stringified = Math.abs(value).toFixed(decimals);
    var _int = decimals ? stringified.slice(0, -1 - decimals) : stringified;
    var i = _int.length % 3;
    var head = i > 0 ? (_int.slice(0, i) + (_int.length > 3 ? ',' : '')) : '';
    var _float = decimals ? stringified.slice(-1 - decimals) : '';
    var sign = value < 0 ? '-' : flagStr;

    return sign + currency + head +
        _int.slice(i).replace(digitsRE, '$1,') +
        _float;
};



/**
 * 字母大写
 * @param 参数说明
 * [value] 要转换的字母
 *
 * e.g 'aA' => 'AA'
 * */
exports.uppercase = function (value) {
    return (value || value === 0) ? value.toString().toUpperCase() : '';
};


/**
 * 字母转小写
 * @param 参数说明
 * [value] 要转换的字母
 *
 * e.g 'Aa' => 'aa'
 */
exports.lowercase = function (value) {
    return (value || value === 0) ? value.toString().toLowerCase() : '';
};


/**
 * 首字母大写
 * @param 参数说明
 * [value] 要转换的字母
 *
 * e.g 'abc' => 'Abc'
 */
exports.capitalize = function (value) {
    if (!value && value !== 0) return '';
    value = value.toString();
    return value.charAt(0).toUpperCase() + value.slice(1);
};